perm filename DSKMON[SS,SYS]1 blob
sn#283505 filedate 1977-05-26 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00006 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE DSKMON DISK STATISTICS MONITOR
C00003 00003 GO: RESET
C00005 00004 SWR: JRST 2,@[.+1] LEAVE IOT USER MODE
C00012 00005 DPERCNT:IDIVI A,=100
C00015 00006 DEFINE ISYMS
C00020 ENDMK
C⊗;
TITLE DSKMON DISK STATISTICS MONITOR
A←1
B←2
C←3
D←4
E←5
T←6
TT←7
Q←10
DDB←11
DAT←12
S←13
L←14
P←17
DDPMAX←←1000 ;MAXIMUM SIZE OF DATA DISK PROGRAM
FLINE←←3 ;FIRST TEXT LINE TO DISPLAY ON
FSLINE←←3*=12 ;FIRST SCAN LINE
DEFINE CW (OP1,D1,OP2,D2,OP3,D3) <
BYTE (8) D1,D2,D3 (3) OP1,OP2,OP3,4
>
FN←←1
CH←←2
COL←←3
HILINE←←4
LOLINE←←5
HS←←400000 ;FOR REFERENCES TO SYSTEM CORE
DEFINE INFORM (A,B) <
PRINTS /A=B
/
>
DEFINE DDCLR (ADR,NWDS) <
ZZ←←0
REPEAT NWDS,<
ADR+ZZ
ZZ←←ZZ+1
>
>
;LOW CORE POINTERS
CHKBEG←←223
SYSTOP←←265
GO: RESET
MOVE P,[-100,,PDL-1]
SETZM FREEZE
PUSHJ P,SYMLK ;LOOKUP SYSTEM SYMBOLS
DPYSIZ 2*1000+2
DPYPOS -600
MOVEI A,CHKBEG
PEEK A,
MOVEI A,233000 ;KLUDGE TO GET PATCH AREA
MOVEM A,SLOPC
LSH A,-9 ;# LO PIECE PAGES
MOVEI B,SYSTOP
PEEK B,
PEEK B,
MOVEM B,FHIADR
LSH B,-9+5 ;STARTING HI PIECE PAGE # * 40
ADDI B,10 ;SET 2-PEICE FLAG
HRL B,A
GETHI B,
JRST 4,.
SETOM SWCNT
MOVE A,[400017,,SWR]
SKIPN DEBUG
SPCWGO A, ;START UP SPACEWAR
SKIPE DEBUG
JRST SWR
MLOOP: INCHRW A
TRNN A,600
JRST MLOOP
LDB B,[POINT 7,A,35]
CAIL B,"a"
CAILE B,"z"
CAIA
SUBI B,40
CAIN B,"E"
PUSHJ P,EXT
CAIN B,40
SETCMM FREEZE
JRST MLOOP
EXT: SPCWAR 'SSW' ;KILL THE SPACEWAR MODULE
PUSH P,DDCLRS+1
SETZM DDCLRS+1
DDUPG DDCLRS ;WAIT FOR SPACE WAR LEVEL TRANSFER TO FINISH
POP P,DDCLRS+1
DDUPG DDCLRS ;CLEAR THE SCREEN
RESET ;RESET THE WORLD
EXIT
SWR: JRST 2,@[.+1] ;LEAVE IOT USER MODE
SKIPE FREEZE
JRST SWXIT
SKIPE DEBUG
JRST SWDEB
AOSE SWCNT
DISMIS
MOVNI A,4
MOVEM A,SWCNT
SWDEB: MOVE P,[-100,,SPWPDL-1]
PUSHJ P,SYMEXM ;EXAMINE SYSTEM SYMBOLS
PUSHJ P,DDPSET
MOVE Q,[-DDPMAX,,DDPRG1-1]
PUSHJ P,MKDIS
PUSHJ P,CLRRST ;CLEAR THE REST OF THE LINES
PUSH Q,[0]
HLRO Q,Q
ADDI Q,DDPMAX+DDPRG1-DDPROG+1 ;SIZE OF DISPLAY PROGRAM
MOVEM Q,DDLWRD ;STORE IN HEADER
DDUPG DDHEAD
SWXIT: SKIPN DEBUG
DISMIS
JRST SWR
MKDIS: MOVE A,NSWPOP
MOVE D,[440700,,DSWPOP]
PUSHJ P,DDECOUT
PUSHJ P,DCRLF
MOVE A,NTSTAR
MOVE D,[440700,,DTSTAR]
PUSHJ P,DDECOUT
PUSHJ P,DCRLF
MOVE A,NSWPOP
MOVE B,NTSTAR
ADD B,A
IMULI A,=10000
IDIV A,B
MOVE D,[440700,,DPER1]
PUSHJ P,DPERCNT
PUSHJ P,DCRLF
REPEAT 0,<
MOVE A,SWPTWC
MOVE D,[440700,,DSWPTW]
PUSHJ P,DDECOUT
PUSHJ P,DCRLF
MOVE A,DSKTWC
MOVE D,[440700,,DDSKTW]
PUSHJ P,DDECOUT
PUSHJ P,DCRLF
>;REPEAT 0
MOVE A,SWPTWC
MULI A,=10000
DIV A,DSKTWC
MOVE D,[440700,,DPER2]
PUSHJ P,DPERCNT
PUSHJ P,DCRLF
MOVE A,SWPTWC
IDIV A,NSWPOP
MOVE D,[440700,,DSIZ1]
PUSHJ P,DDECOUT
MOVEI A,[ASCIZ / WORDS
/]
PUSHJ P,DTYPE
MOVE A,DSKTWC
SUB A,SWPTWC
IDIV A,NTSTAR
MOVE D,[440700,,DSIZ2]
PUSHJ P,DDECOUT
MOVEI A,[ASCIZ / WORDS
/]
PUSHJ P,DTYPE
DMOVE D,DKTIME
DIV D,[10000*=1000000] ;CONVERT TO SECONDS
MOVE A,SWPTWC
ADD A,DSKTWC ;TOTAL WORDS TRANSFERRED
IDIV A,D ;AVERAGE TRANSFER RATE
MOVE D,[440700,,DRATE]
PUSHJ P,DDECOUT
MOVEI A,[ASCIZ \ W/S
\]
PUSHJ P,DTYPE
MOVE A,NJRNUL
SUB A,LNJRNUL
MOVE B,UPTIME
SUB B,LUPTIME
IMULI A,=100
IDIV A,B ;% OF RECENT UPTIME THAT WAS WASTED
MOVE D,[440700,,DPER3]
PUSHJ P,DDECOUT
PUSHJ P,DCRLF
MOVE A,NWSCHED
SUB A,LNWSCHED
IMULI A,=100
MOVE B,UPTIME
SUB B,LUPTIME
IDIV A,B
MOVE D,[440700,,DPER4]
PUSHJ P,DDECOUT
PUSHJ P,DCRLF
MOVE A,DQCNT
MOVE D,[440700,,DQLEN]
PUSHJ P,DDECOUT
PUSHJ P,DCRLF
MOVEI L,FQLIN
PUSHJ P,DINI
PUSHJ P,DQUEUE
POPJ P,
DTAB: MOVEI B,40
PUSHJ P,.+1
PUSHJ P,.+1
PUSHJ P,DCHR
DCHR: IDPB B,D
TLNE D,760000
POPJ P,
PUSH Q,DWORD
DINI: SETZM DWORD
AOS DWORD
MOVE D,[POINT 7,DWORD]
POPJ P,
DFIN: MOVE A,DWORD
ANDCMI A,1
JUMPE A,CPOPJ
PUSH Q,DWORD
POPJ P,
DEXT: HLRZ A,A
SKIPA C,[POINT 6,A,17]
DNAM: MOVE C,[POINT 6,A]
DNAM1: ILDB B,C
ADDI B,40
PUSHJ P,DCHR
TLNE C,770000
JRST DNAM1
MOVEI B,"."
POPJ P,
DPPN: MOVEI B,"["
PUSHJ P,DCHR
PUSH P,A
PUSHJ P,DEXT
MOVEI B,","
PUSHJ P,DCHR
POP P,A
HRLZ A,A
PUSHJ P,DEXT
MOVEI B,"]"
JRST DCHR
DEOL: MOVEI B,15
PUSHJ P,DCHR
MOVEI B,12
AOJA L,DCHR
DDEC: PUSH P,OUTXCT
MOVE B,[PUSHJ P,DCHR]
MOVEM B,OUTXCT
PUSHJ P,DECOUT
POP P,OUTXCT
POPJ P,
DOCT: PUSH P,OUTXCT
MOVE B,[PUSHJ P,DCHR]
MOVEM B,OUTXCT
PUSHJ P,OCTOUT
POP P,OUTXCT
POPJ P,
DQUEUE: SKIPN T,DQCNT ;SIZE OF DISK QUEUE
POPJ P,
MOVE TT,MOPTR
SUB TT,AQBEGIN ;RELATIVE OUTPUT POINTER
MOVE S,TT ;REMEMBER WHERE WE STARTED
DQUE1: SKIPN C,QBEGIN(TT) ;GET DISK QUEUE ENTRY
JRST DQUE2
HLRZ DDB,C
HRRZ DAT,C
SKIPN A,@NAMPTR
JRST DQUE2
PUSHJ P,DNAM
SKIPN A,@EXTPTR
JRST DQUE1A
PUSHJ P,DCHR ;PRINT THE DOT
PUSHJ P,DEXT
DQUE1A: MOVE A,@PPNPTR
PUSHJ P,DPPN
PUSHJ P,DTAB
PUSHJ P,PSUBR
PUSHJ P,DEOL
SOJLE T,CPOPJ
DQUE2: ADDI TT,1
CAIN TT,QEND-QBEGIN
MOVEI TT,0
CAIE TT,(S) ;SKIP IF WE HAVE LOOPED BACK TO WHERE WE STARTED
JRST DQUE1
POPJ P,
CLRRST: SUBI L,=35 ;- NUMBER OF LINES TO CLEAR
CLRRS1: MOVEI B,40
PUSHJ P,DCHR
MOVEI B,15
PUSHJ P,DCHR
MOVEI B,12
PUSHJ P,DCHR
AOJL L,CLRRS1
PUSHJ P,DFIN
POPJ P,
PSUBR: MOVSI A,-NSUBRS
PSUBR1: CAME DAT,SBRVAL(A)
AOBJN A,PSUBR1
JUMPL A,PSUBR2 ;JUMP IF FOUND
MOVE A,DAT
JRST DOCT
PSUBR2: MOVE A,SBRNAM(A)
JRST DNAM
DPERCNT:IDIVI A,=100
PUSH P,B
PUSHJ P,DDECOUT
MOVEI A,"."
IDPB A,D
POP P,A
MOVEI B,"0"
CAIGE A,=10
IDPB B,D
JRST DDECOUT
SYMLK: MOVSI A,-NSYMS
SYMLK1: MOVE B,SYMNAM(A)
MOVE C,BLKNAM(A)
MOVEI D,B
.SYML D,
JRST 4,. ;LOST
MOVEM D,SYMVAL(A)
AOBJN A,SYMLK1
CPOPJ: POPJ P,
SYMEXM: MOVSI A,-NSAVTB
SYMEX0: HLRZ B,SAVTB(A)
HRRZ C,SAVTB(A)
MOVE B,(B)
MOVEM B,(C)
AOBJN A,SYMEX0
MOVSI A,-NEVALS
SYMEX1: HLRZ B,EVALTB(A)
MOVE B,(B) ;GET ADDRESS OF SYSTEM SYMBOL
MOVE B,HS(B) ;GET CONTENTS OF ADDRESS IN SYSTEM
HRRZ C,EVALTB(A)
MOVEM B,(C)
AOBJN A,SYMEX1
MOVE B,ADKTIME
DMOVE B,HS(B) ;GET DOUBLE WORD TIME
DMOVEM B,DKTIME
HRLZ A,AQBEGIN
ADD A,[HS,,QBEGIN]
BLT A,QBEGIN+27
MOVE A,SLOPC ;NUMBER OF WORDS IN GETHI LOW PIECE
ADDI A,HS ;STARTING ADDRESS OF GETHI HI PIECE
SUB A,FHIADR ;SUBTRACT OFFSET OF SYSTEM ADDRESS OF HI PIECE
HRLI A,DDB
MOVE B,A
ADD B,AFILNAM
MOVEM B,NAMPTR
MOVE B,A
ADD B,AFILEXT
MOVEM B,EXTPTR
MOVE B,A
ADD B,AFILPPN
MOVEM B,PPNPTR
POPJ P,
DDPSET: MOVSI A,-NDDCLR
MOVEI B,1
DDPSE1: MOVEM B,@DDPCTB(A)
AOBJN A,DDPSE1
POPJ P,
DCRLF: MOVEI A,[BYTE (7) 15,12]
DTYPE: HRLI A,440700
DTYPE1: ILDB B,A
JUMPE B,CPOPJ
IDPB B,D
JRST DTYPE1
DDECOUT:PUSH P,OUTXCT
MOVE B,[IDPB B,D]
MOVEM B,OUTXCT
PUSHJ P,DECOUT
POP P,OUTXCT
POPJ P,
DECOUT: PUSH P,C
MOVEI C,=10
PUSHJ P,NUMOUT
POP P,C
POPJ P,
OCTOUT: PUSH P,C
MOVEI C,10
PUSHJ P,NUMOUT
POP P,C
POPJ P,
NUMOUT: IDIVI A,(C)
JUMPE A,NUMOU1
HRLM B,(P)
PUSHJ P,NUMOUT
HLRZ B,(P)
NUMOU1: ADDI B,"0"
XCT OUTXCT
POPJ P,
DEFINE ISYMS
<FOR I IN (NTSTAR,NSWPOP,DSKTWC,SWPTWC,DQCNT,QBEGIN,MIPTR,MOPTR,FILNAM,<FILEXT>
,FILPPN,DKTIME,NJRNUL,UPTIME,NWSCHED)>
DEFINE ISUBRS
<FOR I IN (LOOKI,DIDMPI,DMPIBI,DIDMPO,DMPOBI,DRAUFY,DRAUFD,DCLOI,SPREAD,<DIRSRC>
,DIRI1,DIRI2,GGRETI,RB4WCK,DELFIL,DIBUFI,DIBUFO,DCLSO5,DRINT,DRINT1,SATOUT)>
DEFINE SYMS (J)
<IFDIF <J><UNUSED><RADIX50 0,J>>
SYMNAM: ISYMS <SYMS(I)
>
ISUBRS <SYMS(I)
>
NSYMS←←.-SYMNAM
BLKNAM: REPEAT 8,<0>
REPEAT 3,<RADIX50 0,STANFO>
REPEAT NSYMS-8-3,<0>
DEFINE SYMS ! (J)
<IFDIF <J><UNUSED><A!J:0>>
DEFINE SYMS1 (J)
<IFDIF <J><UNUSED><0>>
SYMVAL::ISYMS <SYMS(I)
>
SBRVAL: ISUBRS <SYMS1(I)
>
NSUBRS←←.-SBRVAL
DEFINE SYMS (J)
<IFDIF <J><UNUSED><SIXBIT /J/>>
SBRNAM: ISUBRS <SYMS(I)
>
EVALTB: ANTSTAR,,NTSTAR
ANSWPOP,,NSWPOP
ADSKTWC,,DSKTWC
ASWPTWC,,SWPTWC
ADQCNT,,DQCNT
AMIPTR,,MIPTR
AMOPTR,,MOPTR
ANJRNUL,,NJRNUL
AUPTIME,,UPTIME
ANWSCHED,,NWSCHED
NEVALS←←.-EVALTB
SAVTB: NJRNUL,,LNJRNUL
UPTIME,,LUPTIME
NWSCHED,,LNWSCHED
NSAVTB←←.-SAVTB
NTSTAR: 0
NSWPOP: 0
DSKTWC: 0
SWPTWC: 0
DQCNT: 0
DKTIME: BLOCK 2
NJRNUL: 0
LNJRNUL:0
UPTIME: 0
LUPTIME:0
NWSCHED:0
LNWSCHED:0
QBEGIN: BLOCK 30 ;COPY OF THE SYSTEM'S DISK QUEUE
QEND::
MIPTR: 0
MOPTR: 0
PDL: BLOCK 100
SPWPDL: BLOCK 100
SWCNT: 0
DEBUG: 0
SLOPC: 0 ;NUMBER OF WORDS IN GETHI LOW PIECE
FHIADR: 0 ;FIRST SYSTEM ADDRESS IN GETHI HI PIECE
OUTXCT: OUTCHR B
NAMPTR: 0
EXTPTR: 0
PPNPTR: 0
FREEZE: 0
DDHEAD: 600000,,DDPROG
DDLWRD: 0
0
DDPRGL
DDPROG: CW(FN,46,FN,46,FN,46)
DDPRGL: CW(COL,2,HILINE,FSLINE⊗-4,LOLINE,FLINE&17)
ASCID / DSKMON Disk statistics monitoring program
NUMBER OF SWAP OPS = /
DSWPOP: BLOCK 3 ;ROOM FOR 11 DIGITS, CR AND LF
ASCID /NUMBER OF OTHER DISK OPS = /
DTSTAR: BLOCK 3
ASCID /PERCENTAGE OF SWAP OPS = /
DPER1: BLOCK 3
REPEAT 0,<
ASCID /TOTAL WORDS SWAPPED = /
DSWPTW: BLOCK 3
ASCID /TOTAL WORDS TRANSFERRED = /
DDSKTW: BLOCK 3
>;END REPEAT 0
ASCID /PERCENTAGE OF WORDS SWAPPED = /
DPER2: BLOCK 3
ASCID /AVERAGE SWAP TRANSFER SIZE = /
DSIZ1: BLOCK 3
ASCID /AVERAGE DISK TRANSFER SIZE = /
DSIZ2: BLOCK 3
ASCID /AVERAGE DISK TRANSFER RATE = /
DRATE: BLOCK 3
ASCID /PERCENTAGE OF WASTED TICKS = /
DPER3: BLOCK 3
ASCID /WSCHEDS PER 100 TICKS = /
DPER4: BLOCK 3
ASCID /DISK QUEUE LENGTH = /
DQLEN: BLOCK 3
ASCID /DISK QUEUE:
/
FQLIN←←=12+FLINE
DDPRG1: BLOCK DDPMAX
0
DWORD: 0
DDPCTB: DDCLR DSWPOP,3
DDCLR DTSTAR,3
DDCLR DPER1,3
; DDCLR DSWPTW,3
; DDCLR DDSKTW,3
DDCLR DPER2,3
DDCLR DSIZ1,3
DDCLR DSIZ2,3
DDCLR DRATE,3
DDCLR DQLEN,3
DDCLR DPER3,3
DDCLR DPER4,3
NDDCLR←←.-DDPCTB
DDCLRS: DDCLRP
2
0
0
DDCLRP: CW(FN,17,FN,17,CH,0)
0
END GO